home *** CD-ROM | disk | FTP | other *** search
/ Chip 1996 April / CHIP 1996 aprilis (CD06).zip / CHIP_CD06.ISO / hypertxt.arj / 9301 / HERC1.CD < prev    next >
Text File  |  1995-04-18  |  13KB  |  219 lines

  1.           @VGrafikus konvertálások -- 1.@N
  2.           
  3.           @VMonokróm üzemmód@N
  4.           
  5.           Melyik   Hercules-tulajdonos   nem   irigyelte   még  meg  a
  6.           színpompás   VGA   képeket?   Van-e   olyan  VGA-t  használó
  7.           sorstársunk,   aki   ne  sóhajtana  fel  egy  jól  sikerült,
  8.           nagyfelbontású  16  színû  EGA  kép láttán: ""De jó is lenne
  9.           ez  256 színben!" Egyáltalán, van-e olyan PC-tulajdonos, aki
  10.           elégedett      grafikus      megjelenítôjének      közvetlen
  11.           lehetôségeivel?
  12.           
  13.           
  14.           Aligha.  Az egyes üzemmódokban megjelenített képek többnyire
  15.           letörlésükig   az   eredeti  grafikus  rendszeren  maradnak,
  16.           hacsak  valami  vírus  át  nem  formázza  ôket valami mássá.
  17.           Persze   az   effajta   konvertálás   leginkább  Murphy  ide
  18.           vonatkozó  törvényét  erôsíti:  a  törlés  az egyetlen olyan
  19.           ""konverzió", ami garantáltan mûködik.
  20.           
  21.           Sorozatunkban   olyan   ismereteket   igyekszünk  közzéadni,
  22.           amelyek    segítségével    bármely    grafikus    üzemmódból
  23.           átkonvertálhatunk     tetszôleges     képeket     akármelyik
  24.           megjelenítô  számára,  méghozzá profi minôségben. Lehetséges
  25.           például  egy monokróm (egyszínû) képbôl 64 szürkeárnyalattal
  26.           rendelkezô  VGA  képet  felépíteni,  a 16 színû EGA képekbôl
  27.           pedig igazi, 256 színû képeket készíteni.
  28.           
  29.           Hogy  az alapoktól kezdjük, és hogy a késôbbiekben érthetôek
  30.           legyenek   a   bonyolultabb,   jóval   összetettebb   színes
  31.           konvertálások,  a  fekete-fehér üzemmódokkal érdemes elôször
  32.           foglalkoznunk.    A   legfontosabb   a   Hercules   monokróm
  33.           megjelenítô,  hiszen ez az egyetlen olyan grafikus rendszer,
  34.           amely  csak  e  két szín megjelenítésére képes. Ide tartozik
  35.           még  a  CGA, az EGA és a VGA megjelenítôk monokróm üzemmódja
  36.           is,   de   ezeket  elég  ritkán  használják,  mivel  majdnem
  37.           mindenki   automatikusan   a  színes  üzemmódokat  részesíti
  38.           elônyben.  Természetesen  az  itt  leírtak  éppen úgy igazak
  39.           ezekre az üzemmódokra is, akár a Hercules adapterre.
  40.           
  41.           Minden grafikus konvertálás alapvetôen három részbôl áll:
  42.           
  43.           1.   Az  eredeti  képinformáció  felhasználásával  a  köztes
  44.           információ leképzése.
  45.           
  46.           2.   A   célüzemmód   felkészítése   a   köztes   információ
  47.           megjelenítésére.
  48.           
  49.           3.  A  köztes  információ  egyszerû vagy összetett raszterré
  50.           alakítása és megjelenítése a célüzemmódban.
  51.           
  52.           E  három fô lépés közül a monokróm adapterre csak az elsô és
  53.           a   harmadik   vonatkozik.  A  köztes  fázis  --  mivel  nem
  54.           válogathatunk  a  színek  között  --  kihagyható. Annál több
  55.           lehetôségünk   marad  ezáltal  a  másik  két  részfeladattal
  56.           foglalkozni,  ezek  közül  is legelôször a köztes információ
  57.           leképezésével.
  58.           
  59.           Ez  a  köztes  információ  voltaképpen  a  kép  feldolgozott
  60.           pixeladatainak  a  tárolása.  Rendkívül fontos az ilyesfajta
  61.           (átviteli)  file  formátuma,  hiszen  ezáltal  biztosított a
  62.           kapcsolat  két  egymástól  teljesen eltérô grafikus rendszer
  63.           információhalmaza  között.  Mind  a felbontásnak, mind pedig
  64.           a  színhûségnek  itt kell a legnagyobbnak lennie, hogy aztán
  65.           a  lehetô  legszebben  konvertálhassuk  a képet egy gyengébb
  66.           megjelenítô számára.
  67.           
  68.           Ez  maga  után  vonja,  hogy  mindenképpen TrueColor (valódi
  69.           színû)  színábrázolást  kell  alkalmaznunk  --  a  különbözô
  70.           scannerek,   képdigitalizálók  által  készített  file-ok  is
  71.           nagyrészt   (érthetôen)   ilyenek,   ezért  azokból  szintén
  72.           elvégezhetjük a leképezést.
  73.           
  74.           Minden  egyes  pontban  meghatározzuk az additív színkeverés
  75.           három  alapszínének  -- a vörös, a zöld és a kék -- arányát.
  76.           Legcélszerûbb,  ha  mindhárom  színt  egy  byte (256 egység)
  77.           felbontásban  írjuk  le,  így  képesek  vagyunk  256^3, azaz
  78.           mintegy    16,7    millió    különbözô    szín   kezelésére.
  79.           Felbontásként   minimum   akkorát  válasszunk,  amekkora  az
  80.           eredeti   grafikus   üzemmód   ábrázolóképessége.   A  képet
  81.           soronként  tároljuk,  a  sorokon  belül  pedig balról jobbra
  82.           haladva   minden  pontban  meghatározzuk  a  három  alapszín
  83.           telítettségét.
  84.           
  85.           Monokróm   üzemmódban   természetesen   nem   értelmezhetünk
  86.           színeket,  csak szürkeárnyalatokat. Egy szürke színt a három
  87.           alapszín  azonos telítettsége határoz meg, a fényesség pedig
  88.           a  telítettség értékétôl függ. îgy végsô soron a fekete és a
  89.           fehér  is  a  szürke  egy  árnyalata.  Az elsôben 0--0--0 az
  90.           alapszínek  aránya,  az  utóbbiban  pedig  255--255--255.  A
  91.           ""tökéletes"   szürke  a  127--127--127-es  telítettségekkel
  92.           írható  le,  az ennél kisebb értékek a feketébe, a nagyobbak
  93.           pedig  fehérbe  tolják el a szürke színhatást. Látható, hogy
  94.           a tárolható szürkeárnyalatok száma 256 -- ez bôven elegendô.
  95.           
  96.           
  97.            @VA köztes információ leképzése@N
  98.           
  99.           Ha   meg   akarunk   fejteni   egy   monokróm  képet,  akkor
  100.           ""visszafelé"  kell gondolkodnunk. Ki kell találnunk, milyen
  101.           hatást  akart  ábrázolni az eredeti képet létrehozó program.
  102.           Ezt  egyetlen  pont  vizsgálatával  nem tudjuk eldönteni. Ha
  103.           csak  két  színünk  van,  akkor  a kép egy adott felületének
  104.           látszólagos  fényességét  az  határozza  meg,  hogy az adott
  105.           felületen  lévô pixelek közül hány a fehér színû. Minél több
  106.           a   fehér   pixel   adott   felületen,  annál  fényesebb  az
  107.           összhatás.   îgy   a   @Kfehér  pixelek/összes  pixelek@N  arány
  108.           egy  olyan  0  és  1  közé  esô  számot  ad, amelynél az 1 a
  109.           tökéletes   fehéret,   a   0   a  feketét,  a  0,5  pedig  a
  110.           középszürkét   jelenti.   Ebbôl  következik,  hogy  ezt  azt
  111.           arányt  még  255-tel  fel  kell szoroznunk ahhoz, hogy egész
  112.           számok  formájában  az  eredményt tárolni tudjuk. A számítás
  113.           tehát   a   következô:   @Kfényesség   =   255*(fehér  pixelek@N
  114.           @Kszáma/összes pixelek száma)@N.
  115.           
  116.           Természetesen  minél  nagyobb felületet tapogatunk le, annál
  117.           több  lesz  a  keletkezô  szürkeárnyalatok száma. Egy 1*1-es
  118.           ""felület"   2   fényességértéket  vehet  fel:  az  abszolút
  119.           feketét  (0)  és  az  abszolút  fehéret (255). Ha növeljük a
  120.           területet, ugrásszerûen nô a szürkeárnyalatok száma.
  121.           
  122.           Ez  a  növekedés nem lineáris, hanem parabolikus (négyzetes)
  123.           jellegû,    hiszen   a   mezô   szélhosszának   növekedtével
  124.           négyzetesen  emelkedik  a  felület  ""alternatív" pixeleinek
  125.           száma.   Ha   az  oldalhossz  @KX@N,  akkor  a  @Kszürkeárnyalatok@N
  126.           @Kszáma = X*X+1@N (1. ábra).
  127.           
  128.           
  129.            @VEgyfázisú letapogatás@N
  130.           
  131.           A  köztes  információ  leképzésének  az egyik -- ha nem is a
  132.           legjobb  --  módja  az,  ha  a képet úgy tapogatjuk le, hogy
  133.           sorról  sorra,  a  sorokon belül pedig balról jobbra haladva
  134.           minden  pixel  környezetében  leolvasunk  egy  @KX*X@N képpontos
  135.           mezôt,  és  az ennek alapján kiszámolt értékeket eltároljuk.
  136.           Több  dolgot  kell  figyelembe  vennünk  akkor,  amikor az @KX@N
  137.           értékét  kiválasztjuk.  Minél  nagyobb  ez  az  érték, annál
  138.           finomabb  lesz  a  szürkeskála,  azonban  --  ahogy ez lenni
  139.           szokott  --  közben valami drasztikusan romlik. Ez a tényezô
  140.           pedig   a   kép   élessége.   Minél  nagyobb  ugyanis  az  @KX@N
  141.           értéke,   annál  inkább  egymásba  csúsznak  a  letapogatott
  142.           mezôk,  és  egyre  nagyobb  lesz  az  a terület, amely a két
  143.           egymás  mellett  lévô  fizikai  pixel  körül  olvasott  mezô
  144.           metszeteként értelmezhetô.
  145.           
  146.           Például,  ha  egy  nagyobb  fekete  és fehér terület határán
  147.           dolgozunk,   akkor   a  még  fehér  területen  lévô  pixelek
  148.           leképzésekor  már  bôven beleolvasunk a fekete területbe, és
  149.           ez   fordítva   is  igaz.  Ennek  következtében  a  határhoz
  150.           @KX/2@N    pixelnél    közelebb    esô   pontok   egyre   inkább
  151.           eltolódnak  szürkébe,  és  a  tökéletes  szürke árnyalatot a
  152.           tényleges,  fizikai  határt  alkotó  két  pixel átlaga fogja
  153.           adni,  amelyek  egyenként  is  nagyon  közel  vannak  ehhez.
  154.           Minél  nagyobb  az  @KX@N  érték,  annál  nagyobb tehát annak az
  155.           esélye,  hogy ""téves" átlagképzés történik, ami a keletkezô
  156.           összhatást  egyre  inkább  szürkébe tolja el, tehát rontja a
  157.           kontrasztot és az élességet.
  158.           
  159.           Minél  kisebb  felbontású  az  az  üzemmód, amibe a képet át
  160.           akarjuk     konvertálni,     annál     tovább    növelhetjük
  161.           ""büntetlenül"  az  átlagolt mezô területét. Gondoljunk csak
  162.           a  VGA  320*200-as felbontású alapüzemmódjára. Ez az üzemmód
  163.           csak   negyedannyi   pontot   tartalmaz,   mint  a  Hercules
  164.           720*348-as  felbontású  üzemmódja.  Tehát  ha  2*2-es  mezôt
  165.           átlagolunk   a   monokróm  képen,  az  egyáltalán  nem  okoz
  166.           élességcsökkenést   a   célüzemmód   lehetôségeihez  képest,
  167.           hiszen  a  négy  olvasott pont közvetlenül megfeleltethetô a
  168.           VGA  egyetlen  pixelének. A legmegfelelôbbnek a 4*4-es és az
  169.           5*5-ös   mezôk  tûnnek,  mivel  itt  még  nem  számottevô  a
  170.           homályosság  mértéke,  mégis  a szürke 17--26 féle árnyalata
  171.           jelenik meg.
  172.           
  173.           
  174.            @VTöbbfázisú letapogatás@N
  175.           
  176.           Van  azonban  egy  sokkal  jobb módja is a köztes információ
  177.           leképzésének.  Ezt azoknak ajánlhatom, akik a szebb eredmény
  178.           érdekében  egy  kicsit  több  idôt  áldoznak  az  algoritmus
  179.           elkészítésére.  Itt  egy  pixel fényességének leképzése több
  180.           fázisban   történik,   és   a   kapott   értéket   különbözô
  181.           eljárásokkal  még  módosítjuk  is. Az elsô fázisban ugyanúgy
  182.           járunk   el,   mint   az   elôzôekben,   a   fizikai   pixel
  183.           környezetében   egy   @KX*X@N-es  mezô  szürkeátlagát  készítjük
  184.           el.
  185.           
  186.           Nem  ajánlatos  azonban  túllépnünk  a 3*3-as mezônagyságot.
  187.           Itt  egyébként  ez  a  legoptimálisabb  érték.  Az eredményt
  188.           tároljuk  (még  nem  végleges  értékként!),  és a leolvasott
  189.           mezô  körül  letapogatunk  egy  olyan  @KY*Y@N  elemû területet,
  190.           melynek  elemei  már  nem  fizikai  képelemek,  hanem az @KX*X@N
  191.           pixel   felbontású  mezôk  (2.ábra).  Van  tehát  @KY*Y@N  számú
  192.           különbôzô  szürkeátlagunk, ezek közül a középsô -- vagyis az
  193.           elsôként leolvasott -- kiemelt jelentôsséggel bír.
  194.           
  195.           Ha   mind   az   @KX@N,  mind  az  @KY@N  értékét  3-ban  határoztuk
  196.           meg,  akkor  összesen  (3*3)*(3*3) = 81 képpontot dolgoztunk
  197.           fel,   9   pontonként   külön   kiértékelve.   A   kapott  9
  198.           szürkeárnyalatból  úgy  képezzük végleges átlagot, hogy csak
  199.           azokat   számítjuk   helyes  értéknek,  amelyek  az  eredeti
  200.           (középsô)    szürkeárnyalattól    nem   térnek   el   @KZ%@N-nál
  201.           jobban.   A  @KZ@N  értékét  25  körülinek  érdemes  beállítani,
  202.           ekkor  --  mivel  255-nek a 25%-a 64 -- csak azok az értékek
  203.           számolhatók  bele  az átlagba, amelyeknek a középsô értéktôl
  204.           való  eltérése  nem  nagyobb  mint  64. Ha például egy 80-as
  205.           szürkeségû   terület   abszolút  feketével  határolt  szélén
  206.           dolgozunk,  és  a  középsô  értéket  még  a szürke területen
  207.           képeztük  le,  akkor  a  periférikus, 0-ás átlagú mezôket az
  208.           algoritmus  visszautasítja,  és  így  megtartja  az  eredeti
  209.           élességet.   A  szürkében  elôforduló  (90-es,  85-ös  stb.)
  210.           fényességû  területeket  viszont elfogadja, ezzel is növelve
  211.           a finomságot.
  212.           
  213.           Látható,  hogy  ez  az  eljárás  egyesíti  magában  az  éles
  214.           kontúrok,   és   a   nagyfelbontású   szürkeskála  nyújtotta
  215.           elônyöket,   ezáltal  még  a  professzionális  igényeket  is
  216.           kielégíti.
  217.           
  218.           @KNagy Gergely@N
  219.